import { type MaterialReactTableProps } from 'material-react-table';

export type PropRow = {
  defaultValue?: string;
  description?: string;
  link?: string;
  linkText?: string;
  propName: keyof MaterialReactTableProps;
  required?: boolean;
  source?: 'MRT' | 'TanStack Table' | 'TanStack Virtual' | 'Material UI' | '';
  type?: string;
};

export const rootProps: PropRow[] = [
  {
    propName: 'aggregationFns',
    defaultValue: '',
    description: `This option allows you to define custom aggregation functions that can be referenced in a column's aggregationFn option by their key`,
    link: 'https://tanstack.com/table/v8/docs/api/features/grouping#aggregationfns',
    linkText: 'TanStack Table Grouping Docs',
    required: false,
    source: 'TanStack Table',
    type: 'Record<string, AggregationFn>',
  },
  {
    propName: 'autoResetAll',
    defaultValue: '',
    description:
      'Set this option to override any of the autoReset... feature options.',
    link: 'https://tanstack.com/table/v8/docs/api/core/table#autoresetall',
    linkText: 'TanStack Table Core Table Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'autoResetExpanded',
    defaultValue: '',
    description:
      'Enable this setting to automatically reset the expanded state of the table when grouping state changes.',
    link: 'https://tanstack.com/table/v8/docs/api/features/expanding#autoresetexpanded',
    linkText: 'TanStack Table Expanding Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'autoResetPageIndex',
    defaultValue: '',
    description:
      'If set to true, pagination will be reset to the first page when page-altering state changes eg. data is updated, filters change, grouping changes, etc.',
    link: 'https://tanstack.com/table/v8/docs/api/features/pagination#autoresetpagination',
    linkText: 'TanStack Table Pagination Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'columnFilterModeOptions',
    defaultValue: '',
    description:
      'Specify which filter modes are available for every column. Optionally specify this per column as a column option.',
    link: '/docs/guides/column-filtering#customize-filter-modes',
    linkText: 'MRT Column Filtering Docs',
    required: false,
    source: 'MRT',
    type: 'Array<MRT_FilterOption | string> | null',
  },
  {
    propName: 'columnResizeMode',
    defaultValue: "'onChange'",
    description:
      'Determines when the columnSizing state is updated. onChange updates the state when the user is dragging the resize handle. onEnd updates the state when the user releases the resize handle.',
    link: '/docs/guides/column-resizing#column-resize-mode',
    linkText: 'MRT Column Resizing Docs',
    required: false,
    source: 'MRT',
    type: "'onEnd' | 'onChange'",
  },
  {
    propName: 'columns',
    defaultValue: '',
    description: 'The array of column defs to use for the table.',
    link: '/docs/api/column-options',
    linkText: 'MRT Column Options API Reference',
    required: true,
    source: 'MRT',
    type: 'Array<MRT_ColumnDef<TData>>',
  },
  {
    propName: 'columnVirtualizerProps',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'Partial<VirtualizerOptions<HTMLDivElement, HTMLTableCellElement>>',
  },
  {
    propName: 'columnVirtualizerInstanceRef',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'MutableRefObject<Virtualizer | null>',
  },
  {
    propName: 'data',
    defaultValue: '',
    description: `The data for the table to display. This can be an array of anything, but you will need to set up your column definitions to "access" the data. When the data option changes reference (compared via Object.is), the table will reprocess the data. Any other data processing that relies on the core data model (such as grouping, sorting, filtering, etc) will also be reprocessed.`,
    link: '/docs/getting-started/usage#creating-data-rows',
    linkText: 'Usage Docs',
    required: true,
    source: 'MRT',
    type: 'Array<TData>',
  },
  {
    propName: 'debugAll',
    defaultValue: 'false',
    description:
      'Set this option to true to output all debugging information to the console.',
    link: 'https://tanstack.com/table/v8/docs/api/core/table#debugall',
    linkText: 'TanStack Table Core Table Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'debugColumns',
    defaultValue: 'false',
    description:
      'Set this option to true to output column debugging information to the console.',
    link: 'https://tanstack.com/table/v8/docs/api/core/table#debugcolumns',
    linkText: 'TanStack Table Core Table Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'debugHeaders',
    defaultValue: 'false',
    description:
      'Set this option to true to output header debugging information to the console.',
    link: 'https://tanstack.com/table/v8/docs/api/core/table#debugheaders',
    linkText: 'TanStack Table Core Table Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'debugRows',
    defaultValue: 'false',
    description:
      'Set this option to true to output row debugging information to the console.',
    link: 'https://tanstack.com/table/v8/docs/api/core/table#debugrows',
    linkText: 'TanStack Table Core Table Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'debugTable',
    defaultValue: 'false',
    description:
      'Set this option to true to output table debugging information to the console.',
    link: 'https://tanstack.com/table/v8/docs/api/core/table#debugcolumns',
    linkText: 'TanStack Table Core Table Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'defaultColumn',
    defaultValue: '',
    description:
      'Default column options to use for all column defs supplied to the table. This is useful for providing default cell/header/footer renderers, sorting/filtering/grouping options, etc.',
    link: 'https://tanstack.com/table/v8/docs/api/core/table#defaultcolumn',
    linkText: 'TanStack Table Core Table Docs',
    required: false,
    source: 'TanStack Table',
    type: 'Partial<MRT_ColumnDef<TData>>',
  },
  {
    propName: 'displayColumnDefOptions',
    defaultValue: '',
    description:
      'Customize and override the column definition options for the built-in display columns. (Select, Expand, Row Actions, etc.)',
    link: '/docs/guides/display-columns#display-column-definition-options-prop',
    linkText: 'MRT Display Columns Docs',
    required: false,
    source: 'MRT',
    type: '{ [key: string]: MRT_ColumnDef<TData> }',
  },
  {
    propName: 'editingMode',
    defaultValue: "'modal'",
    description:
      'You can choose between 4 different built-in editing modes. Edit a row in a modal, or a row inline, just 1 cell at a time, or always have all cells editable.',
    link: '/docs/guides/editing#editing-modes',
    linkText: 'MRT Editing Docs',
    required: false,
    source: 'MRT',
    type: "'modal' | 'cell' | 'row' | 'table'",
  },
  {
    propName: 'enableBottomToolbar',
    defaultValue: 'true',
    description: '',
    link: '/docs/guides/customize-toolbars#hide-disable-toolbars',
    linkText: 'MRT Customize Toolbars Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableClickToCopy',
    defaultValue: 'false',
    description: '',
    link: '/docs/guides/click-to-copy',
    linkText: 'MRT Click to Copy Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableColumnActions',
    defaultValue: 'true',
    description: '',
    link: '/docs/guides/column-actions',
    linkText: 'MRT Column Actions Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableColumnDragging',
    defaultValue: 'false',
    description: '',
    link: '/docs/guides/column-ordering-dnd',
    linkText: 'MRT Column Ordering DnD Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableColumnFilterModes',
    defaultValue: 'false',
    description: '',
    link: '/docs/guides/column-filtering#filter-modes',
    linkText: 'MRT Column Filtering Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableColumnFilters',
    defaultValue: 'true',
    description: '',
    link: '/docs/guides/column-filtering#disable-filtering-features',
    linkText: 'MRT Column Filtering Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableColumnOrdering',
    defaultValue: '',
    description: '',
    link: '/docs/guides/column-ordering-dnd',
    linkText: 'MRT Column Ordering DnD Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableColumnVirtualization',
    defaultValue: '',
    description: '',
    link: '/docs/guides/virtualization#enable-column-virtualization',
    linkText: 'MRT Virtualization Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableColumnResizing',
    defaultValue: '',
    description: '',
    link: '/docs/guides/column-resizing',
    linkText: 'MRT Column Resizing Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableDensityToggle',
    defaultValue: 'true',
    description: '',
    link: '/docs/guides/density-toggle',
    linkText: 'MRT Density Toggle Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableEditing',
    defaultValue: '',
    description: '',
    link: '/docs/guides/editing',
    linkText: 'MRT Editing Docs',
    required: false,
    source: 'MRT',
    type: 'boolean | (row: MRT_Row) => boolean',
  },
  {
    propName: 'enableExpandAll',
    defaultValue: 'true',
    description: '',
    link: '/docs/guides/expanding-sub-rows',
    linkText: 'MRT Expanding Sub Rows Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableExpanding',
    defaultValue: '',
    description: '',
    link: '/docs/guides/expanding-sub-rows',
    linkText: 'MRT Expanding Sub Rows Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableFacetedValues',
    defaultValue: 'true',
    description:
      'Enable or disable the calculation of faceted values. Facet values are a list of all unique values in a column. These are useful for advanced filtering components with selection, autocomplete, etc.',
    link: 'https://tanstack.com/table/v8/docs/api/features/filters#enablefilters',
    linkText: 'TanStack Filters Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'enableFilterMatchHighlighting',
    defaultValue: 'true',
    description:
      'Enable or disable highlighting text that matches the filter in the table cells.',
    link: '/docs/guides/column-filtering#filter-match-highlighting',
    linkText: 'MRT Column Filtering Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableFilters',
    defaultValue: 'true',
    description: 'Enable or disable both the global and column filters.',
    link: 'https://tanstack.com/table/v8/docs/api/features/filters#enablefilters',
    linkText: 'TanStack Filters Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'enableFullScreenToggle',
    defaultValue: 'true',
    description:
      'Enable or disable the full screen toggle feature. Disabling will also hide the full screen toggle button.',
    link: '/docs/guides/full-screen-toggle',
    linkText: 'MRT Full Screen Toggle Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableGlobalFilter',
    defaultValue: 'true',
    description: '',
    link: '/docs/guides/global-filtering#disable-global-filter-feature',
    linkText: 'MRT Global Filtering Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableGlobalFilterModes',
    defaultValue: 'true',
    description: '',
    link: '/docs/guides/global-filtering#global-filter-modes',
    linkText: 'MRT Global Filtering Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableGlobalFilterRankedResults',
    defaultValue: 'true',
    description: '',
    link: '/docs/guides/global-filtering#ranked-results',
    linkText: 'MRT Global Filtering Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableGrouping',
    defaultValue: '',
    description: '',
    link: '/docs/guides/aggregation-and-grouping#enable-grouping',
    linkText: 'MRT Aggregation and Grouping Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableHiding',
    defaultValue: 'true',
    description: '',
    link: '/docs/guides/column-hiding',
    linkText: 'MRT Column Hiding Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableMultiRemove',
    defaultValue: '',
    description: '',
    link: 'https://tanstack.com/table/v8/docs/api/features/sorting#enablemultiremove',
    linkText: 'TanStack Sorting Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'enableMultiRowSelection',
    defaultValue: 'true',
    description:
      'If true, the user can select multiple rows at once with a checkbox. If false, the user can only select one row at a time with a radio button.',
    link: '/docs/guides/row-selection#single-row-selection',
    linkText: 'MRT Row Selection Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableMultiSort',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'enablePagination',
    defaultValue: 'true',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'enablePinning',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'enableRowActions',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'enableRowDragging',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'enableRowNumbers',
    defaultValue: '',
    description: '',
    link: '/docs/guides/row-numbers',
    linkText: 'Row Numbers Feature Guide',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableRowOrdering',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'enableRowSelection',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean | (row: MRT_Row) => boolean',
  },
  {
    propName: 'enableRowVirtualization',
    defaultValue: '',
    description: '',
    link: '/docs/guides/virtualization#enable-row-virtualization',
    linkText: 'MRT Virtualization Docs',
    required: false,
    source: 'MRT',
    type: 'boolean',
  },
  {
    propName: 'enableSelectAll',
    defaultValue: 'true',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'enableSorting',
    defaultValue: 'true',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'enableSortingRemoval',
    defaultValue: 'true',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'enableStickyFooter',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'enableStickyHeader',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'enableSubRowSelection',
    defaultValue: 'true',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'enableTableFooter',
    defaultValue: 'true',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'enableTableHead',
    defaultValue: 'true',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'enableToolbarInternalActions',
    defaultValue: 'true',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'enableTopToolbar',
    defaultValue: 'true',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'boolean',
  },
  {
    propName: 'globalFilterModeOptions',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'Array<MRT_FilterOption | string> | null',
  },
  {
    propName: 'expandRowsFn',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: '(dataRow: TData) => TData[]', //?
  },
  {
    propName: 'filterFns',
    defaultValue: '',
    description: `This option allows you to define custom filter functions that can be referenced in a column's filterFn option by their key`,
    link: 'https://tanstack.com/table/v8/docs/api/features/filters#filterfns',
    linkText: 'TanStack Table Filters Docs',
    required: false,
    source: 'TanStack Table',
    type: 'Record<string, FilterFn>',
  },
  {
    propName: 'filterFromLeafRows',
    defaultValue: 'false',
    description: '',
    link: 'https://tanstack.com/table/v8/docs/api/features/filters#filterfromleafrows',
    linkText: 'TanStack Filtering Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'getColumnCanGlobalFilter',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: '(column: Column<TData, unknown>) => boolean',
  },
  {
    propName: 'getCoreRowModel',
    defaultValue: '',
    description: `Material React Table uses the default core row model function from TanStack Table, but you can override its implementation here. It is called once per table and should return a new function which will calculate and return the row model for the table.`,
    link: 'https://tanstack.com/table/v8/docs/api/core/table#getcorerowmodel',
    linkText: 'TanStack Table Core Table Docs',
    required: false,
    source: 'TanStack Table',
    type: '(table: Table<TData>) => () => RowModel<TData>',
  },
  {
    propName: 'getExpandedRowModel',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: '() => MRT_RowModel<TData>',
  },
  {
    propName: 'getFacetedMinMaxValues',
    defaultValue: '',
    description:
      'A function that computes and returns a min/max tuple derived from column.getFacetedRowModel. Useful for displaying faceted result values.',
    link: 'https://tanstack.com/table/v8/docs/api/features/filters#getfacetedminmaxvalues',
    linkText: 'TanStack Table Filters Docs',
    required: false,
    source: 'TanStack Table',
    type: '() => Map<any, number>',
  },
  {
    propName: 'getFacetedRowModel',
    defaultValue: '',
    description:
      'Returns the row model with all other column filters applied, excluding its own filter. Useful for displaying faceted result counts.',
    link: 'https://tanstack.com/table/v8/docs/api/features/filters#getfacetedrowmodel',
    linkText: 'TanStack Table Filters Docs',
    required: false,
    source: 'TanStack Table',
    type: '() => RowModel<TData>',
  },
  {
    propName: 'getFacetedUniqueValues',
    defaultValue: '',
    description:
      'A function that computes and returns a Map of unique values and their occurrences derived from column.getFacetedRowModel. Useful for displaying faceted result values.',
    link: 'https://tanstack.com/table/v8/docs/api/features/filters#getfaceteduniquevalues',
    linkText: 'TanStack Table Filters Docs',
    required: false,
    source: 'TanStack Table',
    type: '() => Map<any, number>',
  },
  {
    propName: 'getFilteredRowModel',
    defaultValue: '',
    description:
      'Returns the row model with all other column filters applied, excluding its own filter. Useful for displaying faceted result counts.',
    link: 'https://tanstack.com/table/v8/docs/api/features/filters#getfilteredrowmodel',
    linkText: 'TanStack Table Filters Docs',
    required: false,
    source: 'TanStack Table',
    type: '() => RowModel<TData>',
  },
  {
    propName: 'getGroupedRowModel',
    defaultValue: '',
    description:
      'Returns the row model after grouping has taken place, but no further.',
    link: 'https://tanstack.com/table/v8/docs/api/features/grouping#getgroupedrowmodel',
    linkText: 'TanStack Table Grouping Docs',
    required: false,
    source: 'TanStack Table',
    type: '(table: Table<TData>) => () => RowModel<TData>',
  },
  {
    propName: 'getIsRowExpanded',
    defaultValue: '',
    description:
      'If provided, allows you to override the default behavior of determining whether a row is currently expanded.',
    link: 'https://tanstack.com/table/v8/docs/api/features/expanding#getisrowexpanded',
    linkText: 'TanStack Table Expanding Docs',
    required: false,
    source: 'TanStack Table',
    type: '(row: Row<TData>) => boolean',
  },
  {
    propName: 'getPaginationRowModel',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: '() => MRT_RowModel<TData>',
  },
  {
    propName: 'getRowCanExpand',
    defaultValue: '',
    description:
      'If provided, allows you to override the default behavior of determining whether a row can be expanded.',
    link: 'https://tanstack.com/table/v8/docs/api/features/expanding#getrowcanexpand',
    linkText: 'TanStack Table Expanding Docs',
    required: false,
    source: 'TanStack Table',
    type: '(row: Row<TData>) => boolean',
  },
  {
    propName: 'getRowId',
    defaultValue: '',
    description: `This optional function is used to derive a unique ID for any given row. If not provided the rows index is used (nested rows join together with . using their grandparents' index eg. index.index.index). If you need to identify individual rows that are originating from any server-side operations, it's suggested you use this function to return an ID that makes sense regardless of network IO/ambiguity eg. a userId, taskId, database ID field, etc.`,
    link: 'https://tanstack.com/table/v8/docs/api/core/table#getrowid',
    linkText: 'TanStack Table Core Table Docs',
    required: false,
    source: 'TanStack Table',
    type: `(originalRow: TData, index: number, parent?: MRT_Row<TData>) => string`,
  },
  {
    propName: 'getSortedRowModel',
    defaultValue: '',
    description:
      'This function is used to retrieve the sorted row model. If using server-side sorting, this function is not required. To use client-side sorting, pass the exported getSortedRowModel() from your adapter to your table or implement your own.',
    link: 'https://tanstack.com/table/v8/docs/api/features/sorting#getsortedrowmodel',
    linkText: 'TanStack Table Sorting Docs',
    required: false,
    source: 'TanStack Table',
    type: '(table: Table<TData>) => () => RowModel<TData>',
  },
  {
    propName: 'getSubRows',
    defaultValue: '',
    description:
      'This optional function is used to access the sub rows for any given row. If you are using nested rows, you will need to use this function to return the sub rows object (or undefined) from the row.',
    link: 'https://tanstack.com/table/v8/docs/api/core/table#getsubrows',
    linkText: 'TanStack Table Core Table Docs',
    required: false,
    source: 'TanStack Table',
    type: `(originalRow: TData, index: number) => undefined | TData[]`,
  },
  {
    propName: 'globalFilterFn',
    defaultValue: '',
    description: 'The filter function to use for global filtering.',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'MRT_FilterOption',
  },
  {
    propName: 'groupedColumnMode',
    defaultValue: 'reorder',
    description:
      'Grouping columns are automatically reordered by default to the start of the columns list. If you would rather remove them or leave them as-is, set the appropriate mode here.',
    link: 'https://tanstack.com/table/v8/docs/api/features/grouping#groupedcolumnmode',
    linkText: 'TanStack Table Grouping Docs',
    required: false,
    source: 'TanStack Table',
    type: `false | 'reorder' | 'remove'`,
  },
  {
    propName: 'icons',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'Partial<MRT_Icons>;',
  },
  {
    propName: 'initialState',
    defaultValue: '',
    description:
      'Use this option to optionally pass initial state to the table. This state will be used when resetting various table states either automatically by the table (eg. options.autoResetPagination) or via functions like table.resetRowSelection(). Most reset function allow you optionally pass a flag to reset to a blank/default state instead of the initial state. Table state will not be reset when this object changes, which also means that the initial state object does not need to be stable.',
    link: '/docs/guides/table-state-management#populate-initial-state',
    linkText: 'Table State Management Guide',
    required: false,
    source: 'MRT',
    type: `Partial<MRT_TableState<TData>>`,
  },
  {
    propName: 'isMultiSortEvent',
    defaultValue: '',
    description:
      'Pass a custom function that will be used to determine if a multi-sort event should be triggered. It is passed the event from the sort toggle handler and should return true if the event should trigger a multi-sort.',
    link: 'https://tanstack.com/table/v8/docs/api/features/sorting#ismultisortevent',
    linkText: 'TanStack Table Sorting Docs',
    required: false,
    source: 'TanStack Table',
    type: '(e: unknown) => boolean',
  },
  {
    propName: 'layoutMode',
    defaultValue: "'semantic'",
    description: '',
    link: '/docs/guides/',
    linkText: 'TODO',
    required: false,
    source: 'MRT',
    type: "'semantic' | 'grid'",
  },
  {
    propName: 'localization',
    defaultValue: '',
    description: '',
    link: '/docs/guides/localization#localization-(i18n)-guide',
    linkText: 'Localization (i18n) Guide',
    required: false,
    source: 'MRT',
    type: 'MRT_Localization',
  },
  {
    propName: 'manualExpanding',
    defaultValue: '',
    description:
      'Enables manual row expansion. If this is set to true, getExpandedRowModel will not be used to expand rows and you would be expected to perform the expansion in your own data model. This is useful if you are doing server-side expansion.',
    link: 'https://tanstack.com/table/v8/docs/api/features/expanding#manualexpanding',
    linkText: 'TanStack Table Expanding Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'manualFiltering',
    defaultValue: '',
    description:
      'Disables the getFilteredRowModel from being used to filter data. This may be useful if your table needs to dynamically support both client-side and server-side filtering.',
    link: 'https://tanstack.com/table/v8/docs/api/features/filters#manualfiltering',
    linkText: 'TanStack Table Filters Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'manualGrouping',
    defaultValue: '',
    description:
      'Enables manual grouping. If this option is set to true, the table will not automatically group rows using getGroupedRowModel() and instead will expect you to manually group the rows before passing them to the table. This is useful if you are doing server-side grouping and aggregation.',
    link: 'https://tanstack.com/table/v8/docs/api/features/grouping#manualgrouping',
    linkText: 'TanStack Table Grouping Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'manualPagination',
    defaultValue: '',
    description:
      'Enables manual pagination. If this option is set to true, the table will not automatically paginate rows using getPaginationRowModel() and instead will expect you to manually paginate the rows before passing them to the table. This is useful if you are doing server-side pagination and aggregation.',
    link: 'https://tanstack.com/table/v8/docs/api/features/pagination#manualpagination',
    linkText: 'TanStack Table Pagination Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'manualSorting',
    defaultValue: '',
    description:
      'Enables manual sorting for the table. If this is true, you will be expected to sort your data before it is passed to the table. This is useful if you are doing server-side sorting.',
    link: 'https://tanstack.com/table/v8/docs/api/features/sorting#manualsorting',
    linkText: 'TanStack Table Sorting Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'maxLeafRowFilterDepth',
    defaultValue: '100',
    description:
      'Set a maximum number leaf row depth that will be filtered. Preserve child rows of filtered rows by setting this to "0"',
    link: 'https://tanstack.com/table/v8/docs/api/features/filters#maxleafrowfilterdepth',
    linkText: 'TanStack Table Filtering Docs',
    required: false,
    source: 'TanStack Table',
    type: 'number',
  },
  {
    propName: 'maxMultiSortColCount',
    defaultValue: '',
    description: 'Set a maximum number of columns that can be multi-sorted.',
    link: 'https://tanstack.com/table/v8/docs/api/features/sorting#maxmultisortcolcount',
    linkText: 'TanStack Table Sorting Docs',
    required: false,
    source: 'TanStack Table',
    type: 'number',
  },
  {
    propName: 'memoMode',
    defaultValue: '',
    description: '',
    link: '/docs/guides/memoize-components',
    linkText: 'Memoize Components Guide',
    required: false,
    source: 'MRT',
    type: `'cell' | 'row' | 'table-body'`,
  },
  {
    propName: 'mergeOptions',
    defaultValue: '',
    description:
      'This option is used to optionally implement the merging of table options. Some framework like solid-js use proxies to track reactivity and usage, so merging reactive objects needs to be handled carefully. This option inverts control of this process to the adapter.',
    link: 'https://tanstack.com/table/v8/docs/api/core/table#mergeoptions',
    linkText: 'TanStack Table Core Docs',
    required: false,
    source: 'TanStack Table',
    type: ' <T>(defaultOptions: T, options: Partial<T>) => T',
  },
  {
    propName: 'meta',
    defaultValue: '',
    description:
      'You can pass any object to options.meta and access it anywhere the table is available via table.options.meta This type is global to all tables.',
    link: 'https://tanstack.com/table/v8/docs/api/core/table#meta',
    linkText: 'TanStack Table Core Docs',
    required: false,
    source: 'TanStack Table',
    type: 'TableMeta ',
  },
  {
    propName: 'muiExpandAllButtonProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/icon-button/#props',
    linkText: 'Material UI IconButton Props',
    required: false,
    source: 'Material UI',
    type: 'IconButtonProps | ({ table }) => IconButtonProps',
  },
  {
    propName: 'muiExpandButtonProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/icon-button/#props',
    linkText: 'Material UI IconButton Props',
    required: false,
    source: 'Material UI',
    type: 'IconButtonProps | ({ row, table }) => IconButtonProps',
  },
  {
    propName: 'muiLinearProgressProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/linear-progress/#props',
    linkText: 'Material UI LinearProgress Props',
    required: false,
    source: 'Material UI',
    type: 'LinearProgressProps | ({ isTopToolbar, table }) => LinearProgressProps',
  },
  {
    propName: 'muiSearchTextFieldProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/text-field/#props',
    linkText: 'Material UI TextField Props',
    required: false,
    source: 'Material UI',
    type: 'TextFieldProps | ({ table }) => TextFieldProps',
  },
  {
    propName: 'muiSelectAllCheckboxProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/checkbox/#props',
    linkText: 'Material UI Checkbox Props',
    required: false,
    source: 'Material UI',
    type: 'CheckboxProps | ({ table }) => CheckboxProps',
  },
  {
    propName: 'muiSelectCheckboxProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/checkbox/#props',
    linkText: 'Material UI Checkbox Props',
    required: false,
    source: 'Material UI',
    type: 'CheckboxProps | ({ row, table }) => CheckboxProps',
  },
  {
    propName: 'muiTableBodyCellCopyButtonProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/button/#props',
    linkText: 'Material UI Button Props',
    required: false,
    source: 'Material UI',
    type: 'ButtonProps | ({ cell, column, row, table }) => ButtonProps',
  },
  {
    propName: 'muiTableBodyCellEditTextFieldProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/text-field/#props',
    linkText: 'Material UI TextField Props',
    required: false,
    source: 'Material UI',
    type: 'TextFieldProps | ({ cell, column, row, table }) => TextFieldProps',
  },
  {
    propName: 'muiTableBodyCellProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/table-cell/#props',
    linkText: 'Material UI TableCell Props',
    required: false,
    source: 'Material UI',
    type: 'TableCellProps | ({ cell, column, row, table }) => TableCellProps',
  },
  {
    propName: 'muiTableBodyCellSkeletonProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/skeleton/#props',
    linkText: 'Material UI Skeleton Props',
    required: false,
    source: 'Material UI',
    type: 'SkeletonProps | ({ cell, column, row, table }) => SkeletonProps',
  },
  {
    propName: 'muiTableBodyProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/table-body/#props',
    linkText: 'Material UI TableBody Props',
    required: false,
    source: 'Material UI',
    type: 'TableBodyProps | ({ table }) => TableBodyProps',
  },
  {
    propName: 'muiTableBodyRowDragHandleProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/icon-button/#props',
    linkText: 'Material UI IconButton Props',
    required: false,
    source: 'Material UI',
    type: 'IconButtonProps | ({ row, table }) => IconButtonProps',
  },
  {
    propName: 'muiTableBodyRowProps',
    defaultValue: '{ hover: true }',
    description: '',
    link: 'https://mui.com/material-ui/api/table-row/#props',
    linkText: 'Material UI TableRow Props',
    required: false,
    source: 'Material UI',
    type: 'TableRowProps | ({ isDetailPanel, row, table }) => TableRowProps',
  },
  {
    propName: 'muiTableContainerProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/table-container/#props',
    linkText: 'Material UI TableContainer Props',
    required: false,
    source: 'Material UI',
    type: 'TableContainerProps | ({ table }) => TableContainerProps',
  },
  {
    propName: 'muiTableDetailPanelProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/table-cell/#props',
    linkText: 'Material UI TableCell Props',
    required: false,
    source: 'Material UI',
    type: 'TableCellProps | ({ row, table }) => TableCellProps',
  },
  {
    propName: 'muiTableFooterCellProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/table-cell/#props',
    linkText: 'Material UI TableCell Props',
    required: false,
    source: 'Material UI',
    type: 'TableCellProps| ({table, column}) => TableCellProps',
  },
  {
    propName: 'muiTableFooterProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/table-footer/#props',
    linkText: 'Material UI TableFooter Props',
    required: false,
    source: 'Material UI',
    type: 'TableFooterProps | ({ table }) => TableFooterProps);',
  },
  {
    propName: 'muiTableFooterRowProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/table-row/#props',
    linkText: 'Material UI TableRow Props',
    required: false,
    source: 'Material UI',
    type: 'TableRowProps | ({table, footerGroup}) => TableRowProps',
  },
  {
    propName: 'muiTableHeadCellColumnActionsButtonProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/icon-button/#props',
    linkText: 'Material UI IconButton Props',
    required: false,
    source: 'Material UI',
    type: 'IconButtonProps | (({table, column}) => IconButtonProps);',
  },
  {
    propName: 'muiTableHeadCellDragHandleProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/icon-button/#props',
    linkText: 'Material UI IconButton Props',
    required: false,
    source: 'Material UI',
    type: 'IconButtonProps | ({table, column}) => IconButtonProps',
  },
  {
    propName: 'muiTableHeadCellFilterCheckboxProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/checkbox/#props',
    linkText: 'Material UI Checkbox Props',
    required: false,
    source: 'Material UI',
    type: 'CheckboxProps | ({ column, table}) => CheckboxProps',
  },
  {
    propName: 'muiTableHeadCellFilterSliderProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/slider/#props',
    linkText: 'Material UI Slider Props',
    required: false,
    source: 'Material UI',
    type: 'SliderProps | ({ column, table}) => SliderProps',
  },
  {
    propName: 'muiTableHeadCellFilterTextFieldProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/text-field/#props',
    linkText: 'Material UI TextField Props',
    required: false,
    source: 'Material UI',
    type: 'TextFieldProps | ({ table, column, rangeFilterIndex}) => TextFieldProps',
  },
  {
    propName: 'muiTableHeadCellProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/table-cell/#props',
    linkText: 'Material UI TableCell Props',
    required: false,
    source: 'Material UI',
    type: 'TableCellProps | ({ table, column}) => TableCellProps',
  },
  {
    propName: 'muiTableHeadProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/table-head/#props',
    linkText: 'Material UI TableHead Props',
    required: false,
    source: 'Material UI',
    type: 'TableHeadProps | ({ table }) => TableHeadProps',
  },
  {
    propName: 'muiTableHeadRowProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/table-row/#props',
    linkText: 'Material UI TableRow Props',
    required: false,
    source: 'Material UI',
    type: 'TableRowProps | ({ table, headerGroup}) => TableRowProps',
  },
  {
    propName: 'muiTablePaginationProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/table-pagination/#props',
    linkText: 'Material UI TablePagination Props',
    required: false,
    source: 'Material UI',
    type: 'Partial<TablePaginationProps> | ({ table }) => Partial<TablePaginationProps>',
  },
  {
    propName: 'muiTablePaperProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/paper/#props',
    linkText: 'Material UI Paper API Docs',
    required: false,
    source: 'Material UI',
    type: 'PaperProps | ({ table }} => PaperProps',
  },
  {
    propName: 'muiTableProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/table/',
    linkText: 'Material UI TableProps API Docs',
    required: false,
    source: 'Material UI',
    type: 'TableProps',
  },
  {
    propName: 'muiToolbarAlertBannerChipProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/chip/#props',
    linkText: 'Material UI Chip Props',
    required: false,
    source: 'Material UI',
    type: 'ChipProps| ({ table }} => ChipProps',
  },
  {
    propName: 'muiToolbarAlertBannerProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/alert/#props',
    linkText: 'Material UI Alert Props',
    required: false,
    source: 'Material UI',
    type: 'AlertProps | ({ table }) => AlertProps',
  },
  {
    propName: 'muiBottomToolbarProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/toolbar/#props',
    linkText: 'Material UI Toolbar Props',
    required: false,
    source: 'Material UI',
    type: 'ToolbarProps | ({ table }) => ToolbarProps',
  },
  {
    propName: 'muiTopToolbarProps',
    defaultValue: '',
    description: '',
    link: 'https://mui.com/material-ui/api/toolbar/#props',
    linkText: 'Material UI Toolbar Props',
    required: false,
    source: 'Material UI',
    type: 'ToolbarProps | ({ table }) => ToolbarProps',
  },
  {
    propName: 'onColumnFiltersChange',
    defaultValue: '',
    description:
      'If provided, this function will be called with an updaterFn when state.columnFilters changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.',
    link: 'https://tanstack.com/table/v8/docs/api/features/filters#oncolumnfilterschange',
    linkText: 'TanStack Table Filter Docs',
    required: false,
    source: 'TanStack Table',
    type: 'OnChangeFn<ColumnFiltersState>',
  },
  {
    propName: 'onColumnOrderChange',
    defaultValue: '',
    description:
      'If provided, this function will be called with an updaterFn when state.columnOrder changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.',
    link: 'https://tanstack.com/table/v8/docs/api/features/column-ordering#oncolumnorderchange',
    linkText: 'TanStack Table Column Ordering Docs',
    required: false,
    source: 'TanStack Table',
    type: 'OnChangeFn<ColumnOrderState>',
  },
  {
    propName: 'onColumnPinningChange',
    defaultValue: '',
    description:
      'If provided, this function will be called with an updaterFn when state.columnPinning changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.',
    link: 'https://tanstack.com/table/v8/docs/api/features/column-pinning#oncolumnpinningchange',
    linkText: 'TanStack Table Column Pinning Docs',
    required: false,
    source: 'TanStack Table',
    type: 'OnChangeFn<ColumnPinningState>',
  },
  {
    propName: 'onColumnSizingChange',
    defaultValue: '',
    description:
      'This optional function will be called when the columnSizing state changes. If you provide this function, you will be responsible for maintaining its state yourself. You can pass this state back to the table via the state.columnSizing table option.',
    link: 'https://tanstack.com/table/v8/docs/api/features/column-sizing#oncolumnsizingchange',
    linkText: 'TanStack Table Column Sizing Docs',
    required: false,
    source: 'TanStack Table',
    type: ' OnChangeFn<ColumnSizingState>',
  },
  {
    propName: 'onColumnSizingInfoChange',
    defaultValue: '',
    description:
      'This optional function will be called when the columnSizingInfo state changes. If you provide this function, you will be responsible for maintaining its state yourself. You can pass this state back to the table via the state.columnSizingInfo table option.',
    link: 'https://tanstack.com/table/v8/docs/api/features/column-sizing#oncolumnsizinginfochange',
    linkText: 'TanStack Table Column Sizing Docs',
    required: false,
    source: 'TanStack Table',
    type: 'OnChangeFn<ColumnSizingInfoState>',
  },
  {
    propName: 'onColumnVisibilityChange',
    defaultValue: '',
    description:
      'If provided, this function will be called with an updaterFn when state.columnVisibility changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.',
    link: 'https://tanstack.com/table/v8/docs/api/features/column-visibility#oncolumnvisibilitychange',
    linkText: 'TanStack Table Column Visibility Docs',
    required: false,
    source: 'TanStack Table',
    type: 'OnChangeFn<ColumnVisibilityState>',
  },
  {
    propName: 'onDraggingColumnChange',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'OnChangeFn<MRT_Column<TData> | null>',
  },
  {
    propName: 'onDraggingRowChange',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'OnChangeFn<MRT_Row<TData> | null>',
  },
  {
    propName: 'onEditingCellChange',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'OnChangeFn<MRT_Cell<TData> | null>',
  },
  {
    propName: 'onEditingRowChange',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'OnChangeFn<MRT_Row<TData> | null>',
  },
  {
    propName: 'onColumnFilterFnsChange',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'OnChangeFn<{ [key: string]: MRT_FilterOption }>',
  },
  {
    propName: 'onGlobalFilterFnChange',
    defaultValue: '',
    description:
      'If provided, this function will be called with an updaterFn when state.globalFilter changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.',
    link: 'https://tanstack.com/table/v8/docs/api/features/filters#onglobalfilterchange',
    linkText: 'TanStack Table Filters Docs',
    required: false,
    source: 'TanStack Table',
    type: 'OnChangeFn<GlobalFilterState>',
  },
  {
    propName: 'onHoveredColumnChange',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'OnChangeFn<MRT_Column<TData> | null>',
  },
  {
    propName: 'onHoveredRowChange',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'OnChangeFn<MRT_Row<TData> | null>',
  },
  {
    propName: 'onExpandedChange',
    defaultValue: '',
    description:
      'This function is called when the expanded table state changes. If a function is provided, you will be responsible for managing this state on your own. To pass the managed state back to the table, use the tableOptions.state.expanded option.',
    link: 'https://tanstack.com/table/v8/docs/api/features/expanding#onexpandedchange',
    linkText: 'TanStack Table Expanding Docs',
    required: false,
    source: 'TanStack Table',
    type: 'OnChangeFn<ExpandedState>',
  },
  {
    propName: 'onGlobalFilterChange',
    defaultValue: '',
    description:
      'If provided, this function will be called with an updaterFn when state.globalFilter changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.',
    link: 'https://tanstack.com/table/v8/docs/api/features/filters#onglobalfilterchange',
    linkText: 'TanStack Table Filters Docs',
    required: false,
    source: 'TanStack Table',
    type: 'OnChangeFn<GlobalFilterState>',
  },
  {
    propName: 'onGroupingChange',
    defaultValue: '',
    description:
      'If this function is provided, it will be called when the grouping state changes and you will be expected to manage the state yourself. You can pass the managed state back to the table via the tableOptions.state.grouping option.',
    link: 'https://tanstack.com/table/v8/docs/api/features/grouping#ongroupingchange',
    linkText: 'TanStack Table Grouping Docs',
    required: false,
    source: 'TanStack Table',
    type: 'OnChangeFn<GroupingState>',
  },
  {
    propName: 'onDensityChange',
    defaultValue: '',
    description: '',
    link: '/docs/guides/density-toggle',
    linkText: 'MRT Density Toggle Docs',
    required: false,
    source: 'MRT',
    type: 'OnChangeFn<MRT_DensityState>',
  },
  {
    propName: 'onIsFullScreenChange',
    defaultValue: '',
    description: '',
    link: '/docs/guides/full-screen-toggle',
    linkText: 'MRT Full Screen Toggle Docs',
    required: false,
    source: 'MRT',
    type: 'OnChangeFn<boolean>',
  },
  {
    propName: 'onEditingRowSave',
    defaultValue: '',
    description: '',
    link: '/docs/guides/editing',
    linkText: 'MRT Editing Docs',
    required: false,
    source: 'MRT',
    type: '({ exitEditingMode, row, table, values}) => Promise<void> | void',
  },
  {
    propName: 'onEditingRowCancel',
    defaultValue: '',
    description: '',
    link: '/docs/guides/editing#add-validation-to-editing-components',
    linkText: 'MRT Editing Docs',
    required: false,
    source: 'MRT',
    type: '({ row, table }) => void',
  },
  {
    propName: 'onPaginationChange',
    defaultValue: '',
    description:
      'If this function is provided, it will be called when the pagination state changes and you will be expected to manage the state yourself. You can pass the managed state back to the table via the tableOptions.state.pagination option.',
    link: 'https://tanstack.com/table/v8/docs/api/features/pagination#onpaginationchange',
    linkText: 'TanStack Table Pagination Docs',
    required: false,
    source: 'TanStack Table',
    type: 'OnChangeFn<PaginationState>',
  },
  {
    propName: 'onRowSelectionChange',
    defaultValue: '',
    description:
      'If provided, this function will be called with an updaterFn when state.rowSelection changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.',
    link: 'https://tanstack.com/table/v8/docs/api/features/row-selection#onrowselectionchange',
    linkText: 'TanStack Table Row Selection Docs',
    required: false,
    source: 'TanStack Table',
    type: 'OnChangeFn<RowSelectionState>',
  },
  {
    propName: 'onShowAlertBannerChange',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'OnChangeFn<boolean>',
  },
  {
    propName: 'onShowColumnFiltersChange',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'OnChangeFn<boolean>',
  },
  {
    propName: 'onShowGlobalFilterChange',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'OnChangeFn<boolean>',
  },
  {
    propName: 'onShowToolbarDropZoneChange',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'OnChangeFn<boolean>',
  },
  {
    propName: 'onSortingChange',
    defaultValue: '',
    description:
      'If provided, this function will be called with an updaterFn when state.sorting changes. This overrides the default internal state management, so you will need to persist the state change either fully or partially outside of the table.',
    link: 'https://tanstack.com/table/v8/docs/api/features/sorting#onsortingchange',
    linkText: 'TanStack Table Sorting Docs',
    required: false,
    source: 'TanStack Table',
    type: 'OnChangeFn<SortingState>',
  },
  {
    propName: 'pageCount',
    defaultValue: '',
    description:
      'When manually controlling pagination, you should supply a total pageCount value to the table if you know it. If you do not know how many pages there are, you can set this to -1.',
    link: 'https://tanstack.com/table/v8/docs/api/features/pagination#pagecount',
    linkText: 'TanStack Table Pagination Docs',
    required: false,
    source: 'TanStack Table',
    type: 'number',
  },
  {
    propName: 'paginateExpandedRows',
    defaultValue: '',
    description:
      'If true expanded rows will be paginated along with the rest of the table (which means expanded rows may span multiple pages). If false expanded rows will not be considered for pagination (which means expanded rows will always render on their parents page. This also means more rows will be rendered than the set page size)',
    link: 'https://tanstack.com/table/v8/docs/api/features/expanding#paginateexpandedrows',
    linkText: 'TanStack Table Expanding Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'positionActionsColumn',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: "'first' | 'last'",
  },
  {
    propName: 'positionExpandColumn',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: "'first' | 'last'",
  },
  {
    propName: 'positionGlobalFilter',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: "'left' | 'right'",
  },
  {
    propName: 'positionPagination',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: "'bottom' | 'top' | 'both'",
  },
  {
    propName: 'positionToolbarAlertBanner',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: "'bottom' | 'top' | 'none'",
  },
  {
    propName: 'positionToolbarDropZone',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: "'bottom' | 'top' | 'both' | 'none'",
  },
  {
    propName: 'renderBottomToolbar',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'ReactNode | ({ table }) => ReactNode',
  },
  {
    propName: 'renderColumnActionsMenuItems',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: '({ closeMenu, column, internalColumnMenuItems, table }) => ReactNode[]',
  },
  {
    propName: 'renderColumnFilterModeMenuItems',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: '({ column, internalFilterOptions, onSelectFilterMode, table }) => ReactNode[]',
  },
  {
    propName: 'renderDetailPanel',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: '({ row, table }) => ReactNode',
  },
  {
    propName: 'renderGlobalFilterModeMenuItems',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: '({ internalFilterOptions, onSelectFilterMode, table }) => ReactNode[]',
  },
  {
    propName: 'renderEmptyRowsFallback',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: '({ table }) => ReactNode',
  },
  {
    propName: 'renderRowActionMenuItems',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: '({ closeMenu, row, table }) => ReactNode[]',
  },
  {
    propName: 'renderRowActions',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: '({ cell, row, table }) => ReactNode',
  },
  {
    propName: 'renderBottomToolbarCustomActions',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: '({ table }) => ReactNode',
  },
  {
    propName: 'renderTopToolbar',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'ReactNode | ({ table }) => ReactNode',
  },
  {
    propName: 'renderTopToolbarCustomActions',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: '({ table }) => ReactNode',
  },
  {
    propName: 'renderToolbarInternalActions',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: '({ table}) => ReactNode',
  },
  {
    propName: 'rowCount',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'number',
  },
  {
    propName: 'rowNumberMode',
    defaultValue: "'original'",
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: "'original' | 'static'",
  },
  {
    propName: 'selectAllMode',
    defaultValue: "'page'",
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: `'all' | 'page'`,
  },
  {
    propName: 'sortDescFirst',
    defaultValue: '',
    description:
      'Set to true for sorting toggles on this column to start in the descending direction.',
    link: 'https://tanstack.com/table/v8/docs/api/features/sorting#sortdescfirst',
    linkText: 'TanStack Table Sorting Docs',
    required: false,
    source: 'TanStack Table',
    type: 'boolean',
  },
  {
    propName: 'sortingFns',
    defaultValue: '',
    description:
      "This option allows you to define custom sorting functions that can be referenced in a column's sortingFn option by their key. Example:",
    link: 'https://tanstack.com/table/v8/docs/api/features/sorting#sortingfns',
    linkText: 'TanStack Table Sorting Docs',
    required: false,
    source: 'TanStack Table',
    type: 'Record<string, SortingFn>',
  },
  {
    propName: 'state',
    defaultValue: '',
    description: '',
    link: '/docs/guides/table-state-management#manage-individual-states-as-needed',
    linkText: 'Table State Management Guide',
    required: false,
    source: 'MRT',
    type: 'Partial<MRT_TableState<TData>>',
  },
  {
    propName: 'tableInstanceRef',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'MutableRefObject<MRT_TableInstance<TData> | null>',
  },
  {
    propName: 'rowVirtualizerProps',
    defaultValue: '',
    description: '',
    link: '',
    linkText: '',
    required: false,
    source: 'TanStack Table',
    type: 'Partial<VirtualizerOptions<HTMLDivElement, HTMLTableRowElement>>',
  },
  {
    propName: 'rowVirtualizerInstanceRef',
    defaultValue: '',
    description: '',
    link: '/docs/guides/virtualization',
    linkText: '',
    required: false,
    source: 'MRT',
    type: 'MutableRefObject<Virtualizer | null>',
  },
  {
    propName: 'tableFeatures',
    defaultValue: '',
    description:
      'An advanced prop to customize functionality of the table instance.',
    link: '',
    linkText: '',
    required: false,
    source: '',
    type: 'Array<MRT_CreateTableFeature<TData>>',
  },
];
